Cloud operators use data centers to provide computing services to clients of the cloud operators. This arrangement is mutually beneficial for the cloud operator and the client. For example, the client can enter into a contract with the cloud operator, whereby a computer-executable application of the client is to execute on computing devices at the computing system of the cloud operator. If the computing system is a data center, the client pays a recurring fee for computing resources that are allocated to the application of the client. It can, therefore, be ascertained that the cloud operator receives a continuing revenue stream from the client, while the client avoids paying a relatively high initial cost for purchasing computing equipment to execute the computer executable application; the client also transfers administrative responsibilities for the computing equipment to the cloud operator. Further, due to economy of scale purchasing power, the cloud operator can purchase computing equipment from a manufacturer at lower costs compared to the costs that would be charged to the client by the manufacturer.
Conventionally, data centers are configured to service a multitude of clients that have various different computer-executable applications that execute on computing devices of the data center, where such applications have heterogeneous workloads. Accordingly, different computer-executable applications, to execute optimally, may have different respective hardware configurations associated therewith. Conventional data centers are not well equipped to effectively handle applications with heterogeneous workloads. For example, a conventional cloud operator allows a client to coarsely describe an application that is to be executed at the data center, and then executes the application using hardware that corresponds to the coarse description. Exemplary coarse descriptions include “high storage capacity” and “low storage latency.” For example, when the client indicates that a computer-executable application thereof is best classified as a “high storage capacity” application, such application can be allocated a server(s) in the data center that has a relatively large amount of computer-readable storage in the form of hard disk drive (HDD), wherein reads and writes to the HDD are relatively slow compared to other types of computer-readable storage. In another example, when the client indicates that the computer-executable application is best classified as a “low storage latency” application (e.g., a database application that must perform many low-latency transactions with storage), the application can be allocated a server(s) in the data center that includes computer-readable storage in the form of a solid state drive (SSD), wherein cost of storing each byte in the SSD is higher compared to cost of storing each byte in a HDD, but reads and writes to the SDD are faster compared to reads and writes to a HDD.
It can be ascertained, however, that many applications are not readily classifiable as belonging to one of the coarse descriptions noted above. Cloud operators have conventionally used two different approaches to handle such applications. The first approach is to require that the client accept one of the coarse descriptions, and consequently the application is executed using computing hardware that is sub-optimal for the application. The second approach is to acquire a customized server for the client (e.g., particularly when the client is a relatively large client and will be providing a significant amount of revenue). In the second approach, however, the cloud operator may lose some of the benefits associated with purchasing power based upon economies of scale, as the cloud operator may be requesting that a manufacturer generate a relatively small number of customized computing devices.